home *** CD-ROM | disk | FTP | other *** search
/ BMUG Revelations / BMUG Revelations.toast / Utilities / Text and Speech / Alpha.5.81 / Tcl / SystemCode / win.tcl < prev    next >
Text File  |  1994-07-07  |  4KB  |  192 lines

  1. #=============================================================================
  2. #    Window handling routines. All procs are bound in AlphaBits.tcl.
  3. #=============================================================================
  4.  
  5. proc shrinkHigh {} {
  6.     global tileTop
  7.     set text [getGeometry]
  8.     set left [lindex $text 0]
  9.     set top [lindex $text 1]
  10.     set width [lindex $text 2]
  11.     sizeWin $width 150
  12.     moveWin $left $tileTop
  13. }
  14.  
  15. proc shrinkLow {} {
  16.     set text [getGeometry]
  17.     set left [lindex $text 0]
  18.     set top [lindex $text 1]
  19.     set width [lindex $text 2]
  20.     moveWin $left 315
  21.     sizeWin $width 146
  22. }
  23.  
  24.  
  25. proc swapWithNext {} {
  26.     set files [winNames -f]
  27.     set len [llength $files]
  28.     if {$len <= 1} return
  29.     bringToFront [lindex $files 1]
  30. }
  31.     
  32. proc nextWindow {} {
  33.     set files [winNames -f]
  34.     if {[llength $files] <= 1} return
  35.     sendToBack [lindex $files 0]
  36. }
  37.  
  38. proc prevWindow {} {
  39.     set files [winNames -f]
  40.     set len [llength $files]
  41.     if {$len <= 1} return
  42.     bringToFront [lindex $files [expr $len-1]]
  43. }
  44.  
  45. proc dispFullName {} {
  46.     message [lindex [winNames -f] 0]
  47. }
  48.  
  49. proc vertically {} {
  50.     global tileHeight tileTop tileWidth
  51.     global numWinsToTile
  52.     set margin 22
  53.     set names [winNames -f]
  54.     set numWins [llength $names]
  55.     if ($numWins<=1) return
  56.     if ($numWins>$numWinsToTile) {set numWins $numWinsToTile}
  57.     set height [expr ($tileHeight/$numWins)-$margin]
  58.     set height [expr {$height + $margin / $numWins}]
  59.     set width $tileWidth
  60.     set ver $tileTop
  61.     if {$numWins == 0} {return}
  62.  
  63.     for {set i 0} {$i < $numWins} {incr i} {
  64.         moveWin [lindex $names $i] 1000 0
  65.         sizeWin [lindex $names $i] $width $height
  66.     }
  67.  
  68.     for {set i 0} {$i < $numWins} {incr i} {
  69.         moveWin [lindex $names $i] 3 $ver
  70.         set ver [expr $ver+$margin+$height]
  71.     }
  72. }
  73.  
  74. proc horizontally {} {
  75.     global tileHeight tileWidth tileTop numWinsToTile
  76.  
  77.     set names [winNames -f]
  78.     set numWins [llength $names]
  79.     if ($numWins<=1) return
  80.     if ($numWins>$numWinsToTile) {set numWins $numWinsToTile}
  81.     set margin 4
  82.     set width [expr ($tileWidth/$numWins)-$margin]
  83.     set width [expr {$width + $margin / $numWins}]
  84.     set height $tileHeight
  85.     set hor 0
  86.     if {$numWins == 0} {return}
  87.  
  88.     for {set i 0} {$i < $numWins} {incr i} {
  89.         moveWin [lindex $names $i] 1000 0
  90.         sizeWin [lindex $names $i] $width $height
  91.     }
  92.  
  93.     for {set i 0} {$i < $numWins} {incr i} {
  94.         moveWin [lindex $names $i] $hor $tileTop
  95.         set hor [expr $hor+$width+$margin]
  96.     }
  97. }
  98.  
  99. proc tiled {} {
  100.     global tileHeight tileWidth numWinsToTile tileTop
  101.     set xPan 8
  102.     set yPan 10
  103.     set xMarg 3
  104.     set yMarg $tileTop
  105.     set yMax 50
  106.     set names [winNames -f]
  107.     set numWins [llength $names]
  108.     if ($numWins<1) return
  109.     set line 0    
  110.     set height [expr $tileHeight-$yPan*($numWins-1)]
  111.     set width [expr $tileWidth-$xPan*($numWins-1)]
  112.     
  113.     for {set i 0} {$i < $numWins} {incr i} {
  114.         moveWin [lindex $names $i] [expr $xMarg+$i*$xPan] [expr $yMarg+$line]
  115.         set line [expr $line+$yPan]
  116.         if ($line>$yMax) {set line 0}
  117.         sizeWin [lindex $names $i] $width $height
  118.     }
  119. }
  120.  
  121.  
  122. proc overlay {} {
  123.     global defHeight defWidth numWinsToTile tileTop
  124.     set names [winNames -f]
  125.     set numWins [llength $names]
  126.     if ($numWins<1) return
  127.     for {set i 0} {$i < $numWins} {incr i} {
  128.         moveWin [lindex $names $i] 3 $tileTop
  129.         sizeWin [lindex $names $i] $defWidth $defHeight
  130.     }
  131. }
  132.  
  133.  
  134. proc threeQuarters {} {
  135.     global tileHeight tileWidth tileTop
  136.  
  137.     if {[llength [set nms [winNames -f]]] <= 2} return
  138.     set one [lindex $nms 0]
  139.     set two [lindex $nms 1]
  140.     set margin 22
  141.     set height [expr ($tileHeight - $margin) / 4]
  142.  
  143.     moveWin $one 1000 0
  144.     sizeWin $one $tileWidth [expr 3 * $height]
  145.     moveWin $two 1000 0
  146.     sizeWin $two $tileWidth $height
  147.  
  148.     set ver $tileTop
  149.     moveWin $one 3 $ver
  150.     moveWin $two 3 [expr $ver + 3 * $height + $margin]
  151. }
  152. bind '3' <Q> threeQuarters
  153.  
  154.  
  155. proc chooseAWindow {} {
  156.     set name [listpick [lsort -ignore [winNames]]]
  157.     if {[string length $name]} {
  158.         bringToFront $name
  159.         if [icon -q] { icon -f $name -o }
  160.        }
  161. }
  162.  
  163.  
  164. proc iconify {} { 
  165.     icon -t 
  166. }
  167.  
  168.  
  169.  
  170. proc zoom {} {
  171.     global nzmState tileHeight tileWidth zoomedGeo tileTop
  172.     
  173.     set win [lindex [winNames -f] 0]
  174.     if {[info exists nzmState($win)]} {
  175.         if {[getGeometry] == $zoomedGeo} {
  176.             set state $nzmState($win)
  177.             moveWin [lindex $state 0] [lindex $state 1]
  178.             sizeWin [lindex $state 2] [lindex $state 3]
  179.             unset nzmState($win)
  180.             return
  181.         }
  182.     } 
  183.  
  184.     set nzmState($win) [getGeometry]
  185.     moveWin 3 $tileTop
  186.     sizeWin $tileWidth $tileHeight
  187.  
  188.     if {![info exists zoomedGeo]} {
  189.         set zoomedGeo [getGeometry]
  190.     }
  191. }
  192.